package com.naizhuai.ui.management.presenter;

import com.naizhuai.Model.db.eneity.ManageNoteBean;
import com.naizhuai.network.Config;
import com.naizhuai.network.entity.ResultResponse;
import com.naizhuai.ui.entity.management.CompanyBean;
import com.naizhuai.ui.entity.management.ManagementMainMsgBean;
import com.naizhuai.ui.entity.management.RequestJoinMessageBean;
import com.naizhuai.ui.entity.management.DepartmentBean;

import java.util.List;

import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
import rx.Observable;

/**
 * 处理manage的方法接口
 * Created by code_han on 2018/1/25.
 */

public interface CompanyManageDataApiStore {
    /*
    查
    */
    //根据公司id、个人id获取个人所在的团队列表信息
    Observable<List<DepartmentBean>> getTeamListByPerIds(String companyId);


    //根据团队的id以及所在公司的id请求所在团队的详细数据
    Observable<DepartmentBean> getTeamDetailsByIds(String companyId, String teamId);

    //根据公司id获取公司的团队列表信息
    Observable<List<DepartmentBean>> getTeamListInCompanyByIds(String companyId);

    //根据公司id获取管理界面的首页信息
    Observable<ManagementMainMsgBean> getCompanyMainMsgByIds(String companyId);

    //根据公司的id请求公司的基本信息
    Observable<CompanyBean> getCompanyDetailsByIds(String companyId);

    //根据公司的id请求公司的基本信息
    Observable<CompanyBean> getCompanyMembersByIds(String companyId);

    //根据公司的id请求公司的基本信息
    Observable<List<ManageNoteBean>> getApplyStatus(String applyIdList);

    /*
    删除
     */

    //根据公司id与团队id删除某个团队（开除/离职等等，在操作的时候需要判断操作人的权限）
    Observable<String> deleteTeamFromCompanyByIds(String teamId);


    //根据被删除人的公司id，团队id以及个人id删除在公司的某人（开除/离职等等，在操作的时候需要判断操作人的权限）
    Observable<String> deletePersonFromCompanyByIds(String departmentId, String teamId, String removeUsersId,int removeType, int isInitiative);


    /*
    修改
     */
    //将某人设为某个组的组长或者管理员（在操作的时候需要判断操作人的权限）
    Observable<DepartmentBean> updatePersonPositionInTeamByIds(String companyId, String teamId, String updateUserId, String status);

    //修改公司信息
    Observable<CompanyBean> updateCompanyMsg(CompanyBean company);

    //修改团队信息
    Observable<String> updateTeamMsg(String departmentId,String departmentName);

    //修改团队中的个人权限
    Observable<String> updateUserInfo(String changedUid, String departmentId, String power);

    //修改公司中的个人权限
    Observable<String> updateUserInfoFromCompany(String changedUid,String power);

    /*
    添加
     */
    //申请加入公司/团队(数种不同的类型)
    Observable<String> requestToJoinCompany(String applyCompanyId, String applyDepartmentId, String content);

    //邀请某人加入公司/团队
    Observable<String> insertPersonAddCompanyByIds(String inviteUserIds,int groupType, String departmentId,String power,String groupId);

    //创建团队
    Observable<String> createTeam(String groupName,String leadingUid,String inviteUsersIds);


    /*
    领导管理以及管理推送
     */
    /**
     * 获取公司申请列表
     * @param companyId 申请的公司id
     * @param offset 查询数量起始值
     * @param limit 查询申请的数量
     * @return
     */
    Observable<List<RequestJoinMessageBean>> getRequestMessageList(String companyId, int offset, int limit);

    /**
     * 获取所有公司列表
     * @param offset
     * @param limit
     * @return
     */
    Observable<List<CompanyBean>> getCompanyMessageList(int offset, int limit);

    /**
     * 处理申请
     * @param applyRes
     * @param applyIdList
     * @return
     */
    Observable<String> handleApply(String applyRes, String applyIdList);

}
